package common;

import com.alibaba.fastjson.JSON;
import 我的JDK基础数据结构.ArrayList.ArrayList;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class GeneralFunction{

    /**
     * 同时运行一个类中的所有方法
     */
    private Object o;
    private Method[] methods;
    private Object[] params;

    public GeneralFunction(Class clazz,Object... params) {
        try {
            this.o= clazz.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        this.methods= clazz.getDeclaredMethods();//获取所有自己的方法,不包括父类的
        this.params=params;
    }

    //运行多个方法
    public void runAllMethod(){
        for (Method method : methods) {
            if(!"main".equals(method.getName())&&method.getModifiers()==Modifier.PUBLIC){//public
                try {
                    System.out.println("方法名:"+method.getName());
                    Object result = method.invoke(o, params);
                    System.out.println("结果:"+ JSON.toJSONString(result));
                } catch (IllegalAccessException | InvocationTargetException e) {
                    System.out.println("辅助方法请设置为私有方法");
                    e.printStackTrace();
                }
                System.out.println("------------------------------");
            }
        }
    }

}
